package com.osfw.dbadminer.entity.connect;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * 连接配置管理
 */
@Data
@Accessors(chain = true)
public class DbaConnect implements Serializable {

    private static final long serialVersionUID = 1L;

    // 连接ID
    @TableId(value = "id_", type = IdType.ASSIGN_ID)
    private Long id;

    // 分组（1-本地，2-开发，3-测试，4-现场）
    @TableField(value = "group_flag_")
    private Integer groupFlag = 0;

    // 分组（local-本地，dev-开发，test-测试，prod-现场）
    @TableField(exist = false)
    private String groupName = "未划组";

    // 连接类型
    @TableField(value = "type_")
    private String type;

    // 连接名称
    @TableField(value = "name_")
    private String name;

    // 主机IP或域名
    @TableField(value = "host_")
    private String host;

    // 端口号
    @TableField(value = "port_")
    private String port;

    // 初始数据库
    @TableField(value = "database_")
    private String database;

    // 用户名
    @TableField(value = "username_")
    private String username;

    // 密码
    @TableField(value = "password_")
    private String password;

    // 是否使用 SSL
    @TableField(value = "is_use_ssl_")
    private Boolean isUseSsl;

    // 是否使用 SSH 隧道
    @TableField(value = "is_use_ssh_")
    private Boolean isUseSsh;

    // 是否使用 HTTP 隧道
    @TableField(value = "is_use_http_")
    private Boolean isUseHttp;

    // 创建时间
    @TableField(value = "create_at_")
    private Date createAt;

    // 创建IP
    @TableField(value = "create_ip_")
    private String createIp;

    // 修改时间
    @TableField(value = "update_at_")
    private Date updateAt;

    // 修改IP
    @TableField(value = "update_ip_")
    private String updateIp;


    public String getGroupName() {
        switch (groupFlag){
            case 1:
                groupName = "本地库";
                break;
            case 2:
                groupName = "开发库";
                break;
            case 3:
                groupName = "测试库";
                break;
            case 4:
                groupName = "现场库";
                break;
            default:
                groupName = "未划组";
        }
        return groupName;
    }
}
